Computers are used in many applications. As computing systems continue to evolve, the graphical display requirements of computing systems become more demanding. This is especially true in applications that include video graphics animation. Animation is achieved by tricking a user's visual sense into perceiving movement on a screen by displaying successive images that differ slightly from the preceding images. If the successive images are displayed in rapid sequence, the user will not perceive any "jumpiness" or "jittering" on the screen. The successive static images will blend smoothly from the user's viewpoint, and movement will be perceived.
The successive images for animation in computer systems are typically achieved using two frames. The first frame is displayed while the second frame is updated with new drawing commands. When drawing to the second frame is completed, the second frame becomes the displayed frame, and modification of the first frame begins. Switching one frame to the display frame and the other to the drawing frame is known as "page flipping". Once the drawing to the first frame is completed, the frames are flipped back to the state where the first frame is displayed and the second is modified. This repetitive updating and flipping achieves the stream of successive images required for animation.
If a large number of objects on the screen are moving simultaneously, the computer system may require a large amount of processing resources in order to produce the successive images required for the animation. This is especially true in complex computer games involving a large number of detailed graphical entities that move independently. If the processor issues a set of commands to modify the drawing frame, followed by a command to perform a page flip, there may be a substantial delay before the actual page flip occurs. This is because a graphics processor in the system must process the drawing commands and modify the drawing frame before the flip command can execute. The flip cannot occur before the drawing commands are completed, and if the flip is executed prematurely, display errors will result.
Because the frame being displayed cannot be modified, once the processor has issued the commands to modify the drawing frame, it may have to wait for the screen flip to occur before issuing drawing commands with respect to the current display frame. When the processor is forced to wait for the graphics processor to complete drawing commands or a frame flip, the efficiency of the system is compromised. Delays experienced by the processor translate into overall slowdowns in the execution of the program. Delays can also produce noticeable aberrations in the animation, which result when one frame is displayed for an extended period before the successive frame replaces it.
Consequently, a need exists for a system that allows the processor to transfer drawing commands and frame flips to the graphics processor in a faster, more efficient manner.